package com.ce.common.db.loader;

import java.util.List;

import com.ce.common.db.base.DataObject;

/**
 * 用于读取数据库中信息的接口
 * @author yangenxiong
 *
 */
public interface DatabaseLoader {

	/**
	 * 获取表名称的集合, 参数ignoreTables为不需要的表名, 即获取除ignoreTables外的表名
	 * @param ignoreTables 忽略不需要的表名
	 * @param types 类型, 如: "TABLE", "VIEW"等
	 * @return
	 * @throws Exception
	 */
	List<DataObject> getTables(String[] types, List<String> ignoreTables) throws Exception;
	
	/**
	 * 获取数据库中所有表名字的集合
	 * @param types 需要获取的种类 常用的有: "TABLE"、"VIEW"、"SYSTEM TABLE"、"GLOBAL TEMPORARY"、"LOCAL TEMPORARY"、"ALIAS" 和 "SYNONYM"。 
	 * @author yangenxiong
	 * @return
	 * @throws Exception
	 */
	List<DataObject> getAllTables(String[] types) throws Exception;
	
	/**
	 * 根据前缀获取数据库中的表集合
	 * @author yangenxiong
	 * @param types
	 * @param regs
	 * @return
	 * @throws Exception
	 */
	List<DataObject> getTablesByPrefixs(String[] types, String[] regs) throws Exception;
	
	/**
	 * 获取不符合前缀的表集合
	 * @return
	 * @throws Exception
	 */
	List<DataObject> getTablesWithOutPrefixs(String[] types, String[] regs) throws Exception;
}
